package org.xlp.base.application.service;

import org.xlp.db.exception.EntityException;
import org.xlp.db.tableoption.annotation.XLPTransaction;
import org.xlp.mvc.annotation.Service;

import java.util.List;

/**
 * Description: 批量保存，更新基础服务类
 * <br/>date: 2023/12/6 14:14
 *
 * @version 1.0
 * @author: xlp
 */
@Service(id = "batchBaseService")
@XLPTransaction
public abstract class BatchBaseService {
    public static final String BEAN_ID = "batchBaseService";

    /**
     * 向数据库中插入多条数据
     * <p>
     * 假如给定要存储的对象是实体，并有相关的主键，并主键值未指定，那么此函数会自动生成一个可用的主键值
     *
     * @param beanList 数据集合
     * @return
     * @throws EntityException OptionDBException
     *                         假如该对象不是实体或数据库访问出错时，抛出该异常
     */
    public <T> int[] save(List<T> beanList) {
        return BaseServiceHelper.getBaseService()._save(beanList);
    }

    /**
     * 批量更新，指定的bean一定要主键属性
     *
     * @param beanList
     * @return
     * @throws EntityException OptionDBException
     *                         假如该对象没要有相关的主属性或不是实体或数据库访问出错时，抛出该异常
     */
    public <T> int[] update(List<T> beanList) {
        return BaseServiceHelper.getBaseService()._update(beanList);
    }
}
